package com.lantosec.hmrp.modules.system.mapper;

import com.lantosec.hmrp.core.kit.PageVO;
import com.lantosec.hmrp.modules.system.entity.SysDeptPosition;
import com.lantosec.hmrp.modules.system.entity.SysPosition;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lantosec.hmrp.modules.system.entity.SysPositionRole;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 岗位表 Mapper 接口
 * </p>
 *
 * @author AutoCode
 * @since 2020-02-12
 */
public interface SysPositionMapper extends BaseMapper<SysPosition> {

    /**
     * 查询部门下的岗位
     * @param deptId
     * @return
     */
    PageVO<SysDeptPosition> getPositionByDeptId(PageVO<SysDeptPosition> page, @Param("deptId") String deptId);

    /**
     * 修改部门岗位的上级管理岗
     * @param sysDeptPosition
     */
    void updateSysDeptPosition(@Param("sysDeptPosition") SysDeptPosition sysDeptPosition);

    /**
     * 设置被设为上级管理岗位的部门岗位为管理岗
     * @param parentPosition
     * @param parentPositionDept
     */
    void updateSysDeptPositionManager(@Param("parentPosition") String parentPosition, @Param("parentPositionDept") String parentPositionDept);

    /**
     * 查询部门下的岗位
     * @param deptId
     * @return
     */
    List<SysDeptPosition> getPositionByDeptIdList(String deptId);

    /**
     * 查询部门岗位下的角色
     * @param deptId
     * @param positionId
     * @return
     */
    List<SysPositionRole> getSysPositionRole(@Param("deptId") String deptId, @Param("positionId") String positionId);

    /**
     * 删除部门岗位下的角色
     * @param deptId
     * @param positionId
     */
    void deleteSysPositionRole(@Param("deptId") String deptId, @Param("positionId") String positionId);

    /**
     *
     * @param deptId
     * @param positionId
     * @param roleId
     */
    void saveSysPositionRole(@Param("deptId") String deptId, @Param("positionId") String positionId, @Param("roleId") String roleId);

    /**
     * 查询是否已存在在部门岗位挂接表
     * @param ids
     * @return
     */
    List<SysDeptPosition> selectSysDeptPosition(String ids);

    /**
     * 查询是否已存在部门人员挂接表
     * @param ids
     * @return
     */
    List<SysDeptPosition> selectSysDeptUser(String ids);
}
